/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package resources;

import almacen.cambiarConexion;
import java.sql.*;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 * @author Pascual, Homeroe
 */
public class local_connection {

    static Properties propiedades;
    static jcProperties editarPropiedades;
    static Connection cn,remote;
    static boolean local = false;

    public local_connection() throws SQLException, ClassNotFoundException {
        connectMethod();
    }
    public static void Reconnect() throws ClassNotFoundException{
        connectMethod();
    }
    
    public static void setToLocal(){
        local=true;
        cn = null;
        try {
            connectMethod();
        } catch (ClassNotFoundException ex) {
almacen.Almacen.logger.log(Level.SEVERE, null, ex);        }
    }
    
    public static void setToRemote(){
        local=false;
        cn = null;
        try {
            connectMethod();
        } catch (ClassNotFoundException ex) {
almacen.Almacen.logger.log(Level.SEVERE, null, ex);        }
    }

       public static void connectMethod() throws ClassNotFoundException{
           while (cn == null) {
            try {
                editarPropiedades = new jcProperties();
                if (editarPropiedades.getProperties() == null) {
                    editarPropiedades.crearPropiedades();
                }
                propiedades = new Properties();
                propiedades = editarPropiedades.getProperties();
                if (local == true){
                    Class.forName("org.sqlite.JDBC");
                    cn = (Connection) DriverManager.getConnection("jdbc:sqlite:cache/prueba.db3");
                } else {
                    cn = (Connection) DriverManager.getConnection("jdbc:mysql://" + propiedades.getProperty("serverLocal") + "/" + propiedades.getProperty("baseDatosLocal") + "?autoReconnect=true", propiedades.getProperty("usuarioLocal"), propiedades.getProperty("passLocal"));
                }
            } catch (SQLException ex) {
                Object[] options = {"Cambiar configuracion","Continuar","Salir"};
                int n = JOptionPane.showOptionDialog(null,"Imposible establecer conexion con servidor\n¿Que desea hacer?",
                "Error",
                JOptionPane.YES_NO_CANCEL_OPTION,
                JOptionPane.ERROR_MESSAGE,
                null,
                options,
                options[2]);
                switch(n){
                    case(0):
                        miconexion = new cambiarConexion(null, true);
                        miconexion.setVisible(true);
                        break;
                    case(1):
                        local = true;
                        break;
                    case(2): default: System.exit(0); break;
                }
            }
        }
   }
    
    public static Connection getconnect(String db) throws SQLException {
        if (remote == null){
            //System.out.println("jdbc:mysql://" + propiedades.getProperty("serverRemoto") + "/" + propiedades.getProperty("baseDatosRemoto") + "?autoReconnect=true "+ propiedades.getProperty("usuarioRemoto")+ propiedades.getProperty("passRemoto"));
            remote = (Connection) DriverManager.getConnection("jdbc:mysql://" + propiedades.getProperty("serverRemoto") + "/" + propiedades.getProperty("baseDatosRemoto") + "?autoReconnect=true", propiedades.getProperty("usuarioRemoto"), propiedades.getProperty("passRemoto"));                
            
        }
        return(remote);
    }
    
    public static Connection getconnect() throws SQLException {
        return(cn);
    }
   static cambiarConexion miconexion;
}
